package com.lut.edu.apm.commodityCenter.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.lut.edu.apm.commodityCenter.pojo.CommodityOrder;

import java.util.List;
import java.util.Map;

/**
 * 库存
 *
 * @author Zhao Suzhen
 * @date `2024/4/13`
 */
public interface CommodityOrderService extends IService<CommodityOrder> {
    /**
     * 查询系统中库存(状态为1的)
     *
     * @param id 商品码
     * @return
     */
    CommodityOrder queryById(String id);

    /**
     * 更新货存
     *
     * @param id      商品码
     * @param reserve 新增或者减少数量
     * @return
     */
    boolean updateReserve(String id, int reserve, String nowTime);

    /**
     * 支付后更新货存
     *
     * @param id      商品码
     * @param reserve 支付数量
     * @return
     */
    boolean updateReservePay(String id, int reserve);

    /**
     * 表格数据查询
     * @param startPaging 开始页面
     * @param productName 商品名
     * @param brand 品牌名
     * @param company 公司名
     * @param queryProductItem 商品类目
     * @param beserve 库存
     * @return
     */
    Page<CommodityOrder> queryProductPaging(int startPaging, String productName, String
            brand, String company, String queryProductItem, List<Integer> beserve);

    /**
     * 模糊查询
     *
     * @param queryName 参数名
     * @param queryValue 参数值
     * @return
     */
    List<Map<String, Object>> queryFuzzyName(String queryName, String queryValue);

    /**
     * 查询最大库存
     * @return
     */
    int queryMaxReserve();

    /**
     * 更新商品
     * @param commodityOrder
     */
    void updateProduct(CommodityOrder commodityOrder);

    /**
     * 查询上新商品
     * @return
     */
    List<Map<String,Object>> queryNewProduct();


    /**
     * 查询商品价格
     * @param productName 商品名
     * @return
     */
    long queryProductPrice(String productName);
}
